package org.dromara.tearoom.domain.enums;


import lombok.AllArgsConstructor;
import lombok.Getter;
import org.dromara.common.core.enums.ArrayValuable;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * 优惠劵平台类型
 *
 * @author ckj
 */
@AllArgsConstructor
@Getter
public enum CouponPlateTypeEnum implements ArrayValuable<Integer> {

    ZY(1, "自营"),
    MT(2, "美团"),
    DY(3, "抖音"),
    KS(4, "快手");

    // 静态映射表：用于快速根据 type 查找枚举实例
    private static final Map<Integer, CouponPlateTypeEnum> TYPE_MAP = new HashMap<>();

    static {
        // 初始化映射表
        for (CouponPlateTypeEnum enumItem : CouponPlateTypeEnum.values()) {
            TYPE_MAP.put(enumItem.getType(), enumItem);
        }
    }

    public static final Integer[] ARRAYS = Arrays.stream(values()).map(CouponPlateTypeEnum::getType).toArray(Integer[]::new);

    /**
     * 值
     */
    private final Integer type;
    /**
     * 名字
     */
    private final String name;

    @Override
    public Integer[] array() {
        return ARRAYS;
    }

    /**
     * 根据 type 获取对应的枚举实例
     * @param type 类型值
     * @return 对应的枚举实例，若未找到返回 null
     */
    public static CouponPlateTypeEnum fromType(Integer type) {
        return TYPE_MAP.get(type);
    }

    /**
     * 根据 type 获取对应的 name
     * @param type 类型值
     * @return 对应的 name，若未找到返回 null
     */
    public static String getNameByType(Integer type) {
        CouponPlateTypeEnum enumItem = TYPE_MAP.get(type);
        return enumItem != null ? enumItem.getName() : null;
    }

    /**
     * 判断是否是自营
     *
     * @param type 类型
     * @return 是否是网关
     */
    public static boolean isZY(Integer type) {
        return ZY.getType().equals(type);
    }




}
